<?php
/**
 * 
 * EGallery.php
 * 
 * @package Entity
 * @author Francesco Trozzi
 */
/**
 * EGallery
 * @author mw
 * @package Entity
 */
class EGallery extends EEntity implements JSONSerializable{
	/**
	 * Id univoco della gallery
	 * @var integer $id
	 */
	private $id;
    /**
     * Nome dell'album
     * @var string $nome
     */
    private $nome;
    /**
     * Username dell'utente
     * @var string $username
     */
    private $username;
    /**
     * Descrizione
     * @var string $descrizione
     */
    private $descrizione;
    /**
     *  Costruttore
     */
    public function __construct(){
    	parent::__construct();
    }
    /**
     * getId
     * @return integer $id
     */
    public function getId() {
    	return $this->id;
    }
    /**
     * getNome
     * @return string
     */
    public function getNome(){
    	return $this->nome;
    }
    /**
     * getUsername
     * @return string
     */
    public function getDescrizione(){
    	return $this->descrizione;
    }
    /**
     * getUsername
     * @return string
     */
    public function getUsername() {
    	return $this->username;
    }
    /**
     * setDescrizione
     * 
     * @param string $descrizione
     */
    public function setDescrizione($descrizione) {
    	$this->descrizione = $descrizione;
    }
    /**
     * setId
     * 
     * @param integer $id
     */
    public function setId($id){
    	$this->id = $id;
    }
    /**
     * setNome
     * 
     * @param string $nome
     * @throws ExceptionDati
     */
    public function setNome($nome) {
    	if(empty($nome)){
    		throw new ExceptionDati('Errore nome vuoto!');
    	}
    	$this->nome = $nome;
    }
    /**
     * setUsername
     *  
     * @param string $username
     */
    public function setUsername($username) {
    	if(!preg_match(RX_USERNAME, $username)){
			throw new ExceptionDati('Username non conforme!');
		}
		$this->username = $username;
    }
    /**
     * jsonEncode
     * 
     * Restituisce un oggetto json
     * 
     * @return string
     */
    public function jsonEncode() {
    	$result = '{';
    	
    	$i = 0;
    	foreach($this as $key => $value) {
    			
    		if($i != 0){
    			$result .= ',';
    		}
    			
    		$result .= JSON_encode($key).':'.JSON_encode($value);
    		$i++;
    	}
    	
    	$result .= '}';
    	
    	return $result;
    }
    /**
     * jsonDecode
     * 
     * @param stdClass $json
     */
    public function jsonDecode($json) {
    	foreach($json as $key => $value){
    		$this->{'set'.$key}($value);
    	}
    }
    /**
     * toArray
     * 
     * @return array
     */
    public function toArray() {
    	$result = array();
    	foreach($this as $key => $value) {
    		$result[$key] = $value;
    	}
    	return $result;
    }
    
}
